home *** CD-ROM | disk | FTP | other *** search
- #ifndef PORTALS_H
- #define PORTALS_H
- #include "winding.h"
-
- /*
- * ============================================================================
- * structures
- * ============================================================================
- */
-
- #define PORTALFILE "PRT1"
-
- struct portal {
- int planenum;
- struct node *nodes[2]; /* [0] = front side of planenum */
- struct portal *next[2];
- struct winding *winding;
- } __packed;
-
- enum visstatus {
- stat_none, stat_working, stat_done
- } __packed;
-
- struct visportal {
- struct plane plane; /* normal pointing into neighbor */
- int leaf; /* neighbor */
-
- struct winding *winding;
- enum visstatus status;
- unsigned char *visbits;
- unsigned char *mightsee;
- int nummightsee;
- int numcansee;
- } __packed;
-
- struct seperatingplane {
- struct seperatingplane *next;
- struct plane plane; /* from portal is on positive side */
- } __packed;
-
- struct passage {
- struct passage *next;
- int from, to; /* leaf numbers */
- struct seperatingplane *planes;
- } __packed;
-
- struct visleaf {
- struct passage *passages;
- int numportals;
- struct visportal **portals; /*[MAX_PORTALS_ON_LEAF]; */
- } __packed;
-
- /*
- * ============================================================================
- * globals
- * ============================================================================
- */
-
- extern struct node outside_node; /* portals outside the world face this */
- extern int num_visleafs; /* leafs the player can be in */
- extern int num_visportals;
- extern struct visportal *portals;
- extern struct visleaf **leafs;
-
- /*
- * ============================================================================
- * prototypes
- * ============================================================================
- */
-
- void PortalizeWorld(__memBase, struct node *headnode);
- void FreeAllPortals(struct node *node);
- void WritePortalfile(__memBase, struct node *headnode, char *portfilename);
- void LoadPortals(char *prtBuf);
-
- #endif
-